To support the H.264 main profile, the Context-based Adaptive Binary Arithmetic Coding (CABAC) is a technical challenge. The basic idea of the binary arithmetic coding process is recursive interval division. The arithmetic decoding engine core keeps two registers. The first register is a range register with 9-bits. The second register is an offset register which is 9-bits in a regular mode and 10-bits in a bypass mode. The range register keeps track of the width of the current interval. The offset is from the bit-stream and points to the current location within the range. When decoding a bin, the range is divided into two subintervals depending on the context to decode that specific bin. After the bin is decided, the range and offset are updated. After decoding one bin, range and offset will be renormalized to keep the precision to decode next bin. It ensures the most significant bit of the 9 bit register range is always 1. Thus, there are a great number of bit wise operations in the CABAC core, frequent renormalization and bitwise reading from a bit-stream, all of which are computationally costly.
There is therefore a continuing need for techniques for optimizing the Context-based Adaptive Binary Arithmetic Coding (CABAC) for the H.264 video decoding.